/*
  - @Author: DengLibin
  - @Date: Create in 2023-01-10 09:39:31
  - @Description:

给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。

回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。

例如，121 是回文，而 123 不是。
*/
package main

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-10 09:40:22
 * @Description: 是否是回文数
 * 思路1: 反转整个数 看是否和原数相等
 * 思路2: 反转到一半时，看反转的一半和剩下的一半是否相等（奇数个相差10倍）
 */

func isPalindrome(x int) bool {
	if x < 0 {
		return false
	}
	if x < 0 || (x%10 == 0 && x != 0) {
		return false
	}
	//t: 反转中的数 r:反转后的数
	var t, r int
	t = x
	for {
		r = r*10 + t%10
		t = t / 10
		if r >= t { //超过一半了
			break
		}
	}
	//偶数个和奇数个
	return r == t || t == r/10
}
